package com.hch.service;

import com.hch.domain.Tag;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface TagService {

    /**
     * 新增标签
     *
     * @param tag
     * @return
     */
    Tag saveTag(Tag tag);

    /**
     * 根据id获取标签
     *
     * @param id
     * @return
     */
    Tag getTag(Long id);

    /**
     * 根据分类名查询是否已有记录
     * @param name
     * @return
     */
    Tag getTagByName(String name);

    /**
     * 分页查询tag
     *
     * @param pageable
     * @return
     */
    Page<Tag> listTag(Pageable pageable);

    /**
     * 获取所有标签
     * @return
     */
    List<Tag> listTag();

    /**
     * 获取每个标签对应博客数目的方法
     * @param size
     * @return
     */
    List<Tag> listTagTop(Integer size);

    /**
     * 获取所选择的标签
     * @return
     */
    List<Tag> listTags(String ids);

    /**
     * 修改分类并且要传递修改后的tag
     * @param id
     * @param tag
     * @return
     */
    Tag updateTag(Long id, Tag tag);

    /**
     * 删除tag
     * @param id
     */
    void deleteTag(Long id);
}
